<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=no">
  <meta name="description" content="API docs for the depositDictionaryDataHelper function from the dictionary library, for the Dart programming language.">
  <title>depositDictionaryDataHelper function - dictionary library - Dart API</title>


  
  <link rel="preconnect" href="https://fonts.gstatic.com">
  <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,300;0,400;0,500;0,700;1,400&display=swap" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0" rel="stylesheet">
  
  <link rel="stylesheet" href="../static-assets/github.css?v1">
  <link rel="stylesheet" href="../static-assets/styles.css?v1">
  <link rel="icon" href="../static-assets/favicon.png?v1">

  
</head>


<body data-base-href="../" data-using-base-href="false" class="light-theme">

<div id="overlay-under-drawer"></div>

<header id="title">
  <span id="sidenav-left-toggle" class="material-symbols-outlined" role="button" tabindex="0">menu</span>
  <ol class="breadcrumbs gt-separated dark hidden-xs">
    <li><a href="../index.html">yuuna</a></li>
    <li><a href="../dictionary/dictionary-library.html">dictionary</a></li>
    <li class="self-crumb">depositDictionaryDataHelper function</li>
  </ol>
  <div class="self-name">depositDictionaryDataHelper</div>
  <form class="search navbar-right" role="search">
    <input type="text" id="search-box" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search...">
  </form>
  <div class="toggle" id="theme-button">
    <label for="theme">
      <input type="checkbox" id="theme" value="light-theme">
      <span id="dark-theme-button" class="material-symbols-outlined">
        brightness_4
      </span>
      <span id="light-theme-button" class="material-symbols-outlined">
        brightness_5
      </span>
    </label>
  </div>
</header>
<main>

  <div id="dartdoc-main-content" class="main-content">
      <div>
<h1><span class="kind-function">depositDictionaryDataHelper</span> function 
 
</h1></div>

    <section class="multi-line-signature">
        

<span class="returntype"><a href="https://api.flutter.dev/flutter/dart-async/Future-class.html">Future</a><span class="signature">&lt;<wbr><span class="type-parameter">void</span>&gt;</span></span>
<span class="name ">depositDictionaryDataHelper</span>(<wbr><ol class="parameter-list"><li><span class="parameter" id="depositDictionaryDataHelper-param-params"><span class="type-annotation"><a href="../dictionary/PrepareDictionaryParams-class.html">PrepareDictionaryParams</a></span> <span class="parameter-name">params</span></span></li>
</ol>)

        

    </section>
    
<section class="desc markdown">
  <p>Performed in another isolate with compute. This is a top-level utility
function that makes use of Isar allowing instances to be opened through
multiple isolates. The function for preparing entries and tags according to
the <a href="../dictionary/DictionaryFormat-class.html">DictionaryFormat</a> is also done in the same isolate, to remove having
to communicate potentially hundreds of thousands of entries to another
newly opened isolate.</p>
</section>


    
<section class="summary source-code" id="source">
  <h2><span>Implementation</span></h2>
  <pre class="language-dart"><code class="language-dart">Future&lt;void&gt; depositDictionaryDataHelper(PrepareDictionaryParams params) async {
  try {
    &#47;&#47;&#47; Create a new instance of Isar as this is a different isolate.
    final Isar database = await Isar.open(
      globalSchemas,
      directory: params.directoryPath,
      maxSizeMiB: 8192,
    );

    &#47;&#47;&#47; Perform format-specific entity generation.
    List&lt;DictionaryTag&gt; tags =
        await params.dictionaryFormat.prepareTags(params);
    Map&lt;DictionaryHeading, List&lt;DictionaryPitch&gt;&gt; pitchesByHeading =
        await params.dictionaryFormat.preparePitches(params);
    Map&lt;DictionaryHeading, List&lt;DictionaryFrequency&gt;&gt; frequenciesByHeading =
        await params.dictionaryFormat.prepareFrequencies(params);
    Map&lt;DictionaryHeading, List&lt;DictionaryEntry&gt;&gt; entriesByHeading =
        await params.dictionaryFormat.prepareEntries(params);

    &#47;&#47;&#47; For each entity type, assign heading and dictionary so that there are
    &#47;&#47;&#47; links and backlinks.
    for (DictionaryTag tag in tags) {
      tag.dictionary.value = params.dictionary;
    }
    Map&lt;int, DictionaryTag&gt; tagsByHash =
        Map.fromEntries(tags.map((tag) =&gt; MapEntry(tag.isarId, tag)));

    &#47;&#47;&#47; This section is for linking heading and entry tags into their actual
    &#47;&#47;&#47; entities, via the tag names they have. The tag names themselves will
    &#47;&#47;&#47; not be imported to the database to save space, but will be accessible
    &#47;&#47;&#47; via links.
    for (MapEntry&lt;DictionaryHeading, List&lt;DictionaryEntry&gt;&gt; entriesForHeading
        in entriesByHeading.entries) {
      for (DictionaryEntry entryForHeading in entriesForHeading.value) {
        entryForHeading.heading.value = entriesForHeading.key;
        entryForHeading.dictionary.value = params.dictionary;

        List&lt;DictionaryTag&gt; entryTags = entryForHeading.entryTagNames
            .map((name) {
              int dictionaryId = entryForHeading.dictionary.value!.id;
              int hash =
                  DictionaryTag.hash(dictionaryId: dictionaryId, name: name);
              return tagsByHash[hash];
            })
            .whereNotNull()
            .toList();
        List&lt;DictionaryTag&gt; headingTags = entryForHeading.headingTagNames
            .map((name) {
              int dictionaryId = entryForHeading.dictionary.value!.id;
              int hash =
                  DictionaryTag.hash(dictionaryId: dictionaryId, name: name);
              return tagsByHash[hash];
            })
            .whereNotNull()
            .toList();

        entryForHeading.tags.addAll(entryTags);
        entryForHeading.heading.value!.tags.addAll(headingTags);
      }
    }

    for (MapEntry&lt;DictionaryHeading, List&lt;DictionaryPitch&gt;&gt; pitchesForHeading
        in pitchesByHeading.entries) {
      for (DictionaryPitch pitchForHeading in pitchesForHeading.value) {
        pitchForHeading.heading.value = pitchesForHeading.key;
        pitchForHeading.dictionary.value = params.dictionary;
      }
    }
    for (MapEntry&lt;DictionaryHeading,
            List&lt;DictionaryFrequency&gt;&gt; frequenciesByHeading
        in frequenciesByHeading.entries) {
      for (DictionaryFrequency frequencyForHeading
          in frequenciesByHeading.value) {
        frequencyForHeading.heading.value = frequenciesByHeading.key;
        frequencyForHeading.dictionary.value = params.dictionary;
      }
    }

    if (params.useSlowImport) {
      &#47;&#47;&#47; Write the [Dictionary] entity.
      database.writeTxnSync(() {
        database.dictionarys.putSync(params.dictionary);
      });

      &#47;&#47;&#47; Write [DictionaryTag] entities.
      int tagCount = 0;
      int tagTotal = tags.length;
      partition&lt;DictionaryTag&gt;(tags, 10000).forEach((batch) {
        database.writeTxnSync(() {
          database.dictionaryTags.putAllSync(batch);
        });
        tagCount += batch.length;
        params.send(t.import_write_tag(count: tagCount, total: tagTotal));
      });

      &#47;&#47;&#47; Write [DictionaryPitch] entities.
      int pitchCount = 0;
      int pitchTotal = pitchesByHeading.values.map((e) =&gt; e.length).sum;
      partition&lt;MapEntry&lt;DictionaryHeading, List&lt;DictionaryPitch&gt;&gt;&gt;(
              pitchesByHeading.entries, 10000)
          .forEach((batch) {
        database.writeTxnSync(() {
          for (MapEntry&lt;DictionaryHeading,
              List&lt;DictionaryPitch&gt;&gt; pitchesForHeading in batch) {
            DictionaryHeading heading = pitchesForHeading.key;
            List&lt;DictionaryPitch&gt; pitches = pitchesForHeading.value;

            database.dictionaryHeadings.putSync(heading);
            database.dictionaryPitchs.putAllSync(pitches);

            pitchCount += pitches.length;
          }
        });

        params.send(t.import_write_pitch(count: pitchCount, total: pitchTotal));
      });

      &#47;&#47;&#47; Write [DictionaryFrequency] entities.
      int frequencyCount = 0;
      int frequencyTotal = frequenciesByHeading.values.map((e) =&gt; e.length).sum;
      partition&lt;MapEntry&lt;DictionaryHeading, List&lt;DictionaryFrequency&gt;&gt;&gt;(
              frequenciesByHeading.entries, 10000)
          .forEach((batch) {
        database.writeTxnSync(() {
          for (MapEntry&lt;DictionaryHeading,
              List&lt;DictionaryFrequency&gt;&gt; frequenciesForHeading in batch) {
            DictionaryHeading heading = frequenciesForHeading.key;
            List&lt;DictionaryFrequency&gt; frequencies = frequenciesForHeading.value;

            database.dictionaryHeadings.putSync(heading);
            database.dictionaryFrequencys.putAllSync(frequencies);

            frequencyCount += frequencies.length;
          }
        });

        params.send(t.import_write_frequency(
            count: frequencyCount, total: frequencyTotal));
      });

      &#47;&#47;&#47; Used to test the collision resistance of the FNV-1a algorithm used
      &#47;&#47;&#47; for hashing dictionary headings to each have unique integer IDs.
      &#47;&#47;&#47; This doesn&#39;t seem that heavy but we shouldn&#39;t instantiate millions
      &#47;&#47;&#47; of elements at any given time, so this should be commented out for
      &#47;&#47;&#47; a production release or when not debugging for collisions.
      &#47;&#47;&#47;
      &#47;&#47;&#47; For testing, a mix of Japanese bilingual and monolingual dictionaries
      &#47;&#47;&#47; can be imported in sequence. The collision count should always be
      &#47;&#47;&#47; zero. Interestingly, the Dart implementation of FNV-1a recommended by
      &#47;&#47;&#47; Isar seems to produce less collisions than a MurmurHash V3
      &#47;&#47;&#47; implementation. In any case, the code below can be uncommented for
      &#47;&#47;&#47; and hash algorithm comparison testing and research.
      &#47;&#47;&#47;
      &#47;&#47;&#47; The idea is to get the delta number of headings, but also take into
      &#47;&#47;&#47; account the number of headings already in the database.

      &#47;&#47; int headingsInDatabase = database.dictionaryHeadings.countSync();
      &#47;&#47; int headingsToImportAlreadyInDatabase = database.dictionaryHeadings
      &#47;&#47;     .getAllSync(entriesByHeading.keys.map((e) =&gt; e.id).toList())
      &#47;&#47;     .whereNotNull()
      &#47;&#47;     .length;
      &#47;&#47; int headingsToImportNotInDatabase =
      &#47;&#47;     entriesByHeading.keys.length - headingsToImportAlreadyInDatabase;

      &#47;&#47; debugPrint(&#39;Headings In Database: $headingsInDatabase&#39;);
      &#47;&#47; debugPrint(
      &#47;&#47;     &#39;Headings To Import Already In Database: $headingsToImportAlreadyInDatabase&#39;);
      &#47;&#47; debugPrint(
      &#47;&#47;     &#39;Headings To Import Not In Database: $headingsToImportNotInDatabase&#39;);

      &#47;&#47;&#47; Write [DictionaryEntry] entities.
      int entryCount = 0;
      int entryTotal = entriesByHeading.values.map((e) =&gt; e.length).sum;
      partition&lt;MapEntry&lt;DictionaryHeading, List&lt;DictionaryEntry&gt;&gt;&gt;(
              entriesByHeading.entries, 10000)
          .forEach((batch) {
        database.writeTxnSync(() {
          for (MapEntry&lt;DictionaryHeading,
              List&lt;DictionaryEntry&gt;&gt; entriesForHeading in batch) {
            DictionaryHeading heading = entriesForHeading.key;
            List&lt;DictionaryEntry&gt; entries = entriesForHeading.value;

            database.dictionaryHeadings.putSync(heading);
            database.dictionaryEntrys.putAllSync(entries);

            entryCount += entries.length;
          }
        });

        params.send(t.import_write_entry(count: entryCount, total: entryTotal));
      });

      &#47;&#47;&#47; Collision count should always be zero.

      &#47;&#47; int newHeadingsInDatabase = database.dictionaryHeadings.countSync();
      &#47;&#47; int collisionsFound = newHeadingsInDatabase -
      &#47;&#47;     headingsInDatabase -
      &#47;&#47;     headingsToImportNotInDatabase;
      &#47;&#47; debugPrint(&#39;New Headings In Database: $newHeadingsInDatabase&#39;);
      &#47;&#47; debugPrint(&#39;Collisions Found: $collisionsFound&#39;);
    } else {
      &#47;&#47;&#47; Write as one transaction. If anything fails, no changes should occur.
      database.writeTxnSync(() {
        &#47;&#47;&#47; Write the [Dictionary] entity.
        database.dictionarys.putSync(params.dictionary);

        &#47;&#47;&#47; Write [DictionaryTag] entities.
        int tagCount = 0;
        int tagTotal = tags.length;
        database.dictionaryTags.putAllSync(tags);
        partition&lt;DictionaryTag&gt;(tags, 10000).forEach((batch) {
          database.dictionaryTags.putAllSync(batch);
          tagCount += batch.length;
          params.send(t.import_write_tag(count: tagCount, total: tagTotal));
        });

        &#47;&#47;&#47; Write [DictionaryPitch] entities.
        int pitchCount = 0;
        int pitchTotal = pitchesByHeading.values.map((e) =&gt; e.length).sum;
        partition&lt;MapEntry&lt;DictionaryHeading, List&lt;DictionaryPitch&gt;&gt;&gt;(
                pitchesByHeading.entries, 10000)
            .forEach((batch) {
          for (MapEntry&lt;DictionaryHeading,
              List&lt;DictionaryPitch&gt;&gt; pitchesForHeading in batch) {
            DictionaryHeading heading = pitchesForHeading.key;
            List&lt;DictionaryPitch&gt; pitches = pitchesForHeading.value;

            database.dictionaryHeadings.putSync(heading);
            database.dictionaryPitchs.putAllSync(pitches);
            pitchCount += pitches.length;
          }

          params
              .send(t.import_write_pitch(count: pitchCount, total: pitchTotal));
        });

        &#47;&#47;&#47; Write [DictionaryFrequency] entities.
        int frequencyCount = 0;
        int frequencyTotal =
            frequenciesByHeading.values.map((e) =&gt; e.length).sum;
        partition&lt;MapEntry&lt;DictionaryHeading, List&lt;DictionaryFrequency&gt;&gt;&gt;(
                frequenciesByHeading.entries, 10000)
            .forEach((batch) {
          for (MapEntry&lt;DictionaryHeading,
              List&lt;DictionaryFrequency&gt;&gt; frequenciesForHeading in batch) {
            DictionaryHeading heading = frequenciesForHeading.key;
            List&lt;DictionaryFrequency&gt; frequencies = frequenciesForHeading.value;

            database.dictionaryHeadings.putSync(heading);
            database.dictionaryFrequencys.putAllSync(frequencies);
            frequencyCount += frequencies.length;
          }

          params.send(t.import_write_frequency(
              count: frequencyCount, total: frequencyTotal));
        });

        &#47;&#47;&#47; Used to test the collision resistance of the FNV-1a algorithm used
        &#47;&#47;&#47; for hashing dictionary headings to each have unique integer IDs.
        &#47;&#47;&#47; This doesn&#39;t seem that heavy but we shouldn&#39;t instantiate millions
        &#47;&#47;&#47; of elements at any given time, so this should be commented out for
        &#47;&#47;&#47; a production release or when not debugging for collisions.
        &#47;&#47;&#47;
        &#47;&#47;&#47; For testing, a mix of Japanese bilingual and monolingual dictionaries
        &#47;&#47;&#47; can be imported in sequence. The collision count should always be
        &#47;&#47;&#47; zero. Interestingly, the Dart implementation of FNV-1a recommended by
        &#47;&#47;&#47; Isar seems to produce less collisions than a MurmurHash V3
        &#47;&#47;&#47; implementation. In any case, the code below can be uncommented for
        &#47;&#47;&#47; and hash algorithm comparison testing and research.
        &#47;&#47;&#47;
        &#47;&#47;&#47; The idea is to get the delta number of headings, but also take into
        &#47;&#47;&#47; account the number of headings already in the database.
        &#47;&#47; int headingsInDatabase = database.dictionaryHeadings.countSync();
        &#47;&#47; int headingsToImportAlreadyInDatabase = database.dictionaryHeadings
        &#47;&#47;     .getAllSync(entriesByHeading.keys.map((e) =&gt; e.id).toList())
        &#47;&#47;     .whereNotNull()
        &#47;&#47;     .length;
        &#47;&#47; int headingsToImportNotInDatabase =
        &#47;&#47;     entriesByHeading.keys.length - headingsToImportAlreadyInDatabase;

        &#47;&#47; debugPrint(&#39;Headings In Database: $headingsInDatabase&#39;);
        &#47;&#47; debugPrint(
        &#47;&#47;     &#39;Headings To Import Already In Database: $headingsToImportAlreadyInDatabase&#39;);
        &#47;&#47; debugPrint(
        &#47;&#47;     &#39;Headings To Import Not In Database: $headingsToImportNotInDatabase&#39;);

        &#47;&#47;&#47; Write [DictionaryEntry] entities.
        int entryCount = 0;
        int entryTotal = entriesByHeading.values.map((e) =&gt; e.length).sum;
        partition&lt;MapEntry&lt;DictionaryHeading, List&lt;DictionaryEntry&gt;&gt;&gt;(
                entriesByHeading.entries, 10000)
            .forEach((batch) {
          for (MapEntry&lt;DictionaryHeading,
              List&lt;DictionaryEntry&gt;&gt; entriesForHeading in batch) {
            DictionaryHeading heading = entriesForHeading.key;
            List&lt;DictionaryEntry&gt; entries = entriesForHeading.value;

            database.dictionaryHeadings.putSync(heading);
            database.dictionaryEntrys.putAllSync(entries);
            entryCount += entries.length;
          }

          params
              .send(t.import_write_entry(count: entryCount, total: entryTotal));
        });

        &#47;&#47;&#47; Collision count should always be zero.
        &#47;&#47; int newHeadingsInDatabase = database.dictionaryHeadings.countSync();
        &#47;&#47; int collisionsFound = newHeadingsInDatabase -
        &#47;&#47;     headingsInDatabase -
        &#47;&#47;     headingsToImportNotInDatabase;
        &#47;&#47; debugPrint(&#39;New Headings In Database: $newHeadingsInDatabase&#39;);
        &#47;&#47; debugPrint(&#39;Collisions Found: $collisionsFound&#39;);
      });
    }
  } catch (e, stack) {
    debugPrint(&#39;$e&#39;);
    debugPrint(&#39;$stack&#39;);

    params.send(&#39;$e&#39;);

    rethrow;
  }
}</code></pre>
</section>


  </div> <!-- /.main-content -->

  <div id="dartdoc-sidebar-left" class="sidebar sidebar-offcanvas-left">
    <header id="header-search-sidebar" class="hidden-l">
  <form class="search-sidebar" role="search">
    <input type="text" id="search-sidebar" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search...">
  </form>
</header>

<ol class="breadcrumbs gt-separated dark hidden-l" id="sidebar-nav">
  <li><a href="../index.html">yuuna</a></li>
  <li><a href="../dictionary/dictionary-library.html">dictionary</a></li>
  <li class="self-crumb">depositDictionaryDataHelper function</li>
</ol>


    <h5>dictionary library</h5>
    <ol>
      <li class="section-title"><a href="../dictionary/dictionary-library.html#classes">Classes</a></li>
        <li><a href="../dictionary/AbbyyLingvoFormat-class.html">AbbyyLingvoFormat</a></li>
        <li><a href="../dictionary/DeleteDictionaryParams-class.html">DeleteDictionaryParams</a></li>
        <li><a href="../dictionary/Dictionary-class.html">Dictionary</a></li>
        <li><a href="../dictionary/DictionaryEntry-class.html">DictionaryEntry</a></li>
        <li><a href="../dictionary/DictionaryFormat-class.html">DictionaryFormat</a></li>
        <li><a href="../dictionary/DictionaryFrequency-class.html">DictionaryFrequency</a></li>
        <li><a href="../dictionary/DictionaryHeading-class.html">DictionaryHeading</a></li>
        <li><a href="../dictionary/DictionaryPitch-class.html">DictionaryPitch</a></li>
        <li><a href="../dictionary/DictionarySearchParams-class.html">DictionarySearchParams</a></li>
        <li><a href="../dictionary/DictionarySearchResult-class.html">DictionarySearchResult</a></li>
        <li><a href="../dictionary/DictionaryTag-class.html">DictionaryTag</a></li>
        <li><a href="../dictionary/IsolateParams-class.html">IsolateParams</a></li>
        <li><a href="../dictionary/MigakuFormat-class.html">MigakuFormat</a></li>
        <li><a href="../dictionary/PrepareDictionaryParams-class.html">PrepareDictionaryParams</a></li>
        <li><a href="../dictionary/PrepareDirectoryParams-class.html">PrepareDirectoryParams</a></li>
        <li><a href="../dictionary/UpdateDictionaryHistoryParams-class.html">UpdateDictionaryHistoryParams</a></li>
        <li><a href="../dictionary/YomichanFormat-class.html">YomichanFormat</a></li>

      <li class="section-title"><a href="../dictionary/dictionary-library.html#extensions">Extensions</a></li>
        <li><a href="../dictionary/DictionaryByIndex.html">DictionaryByIndex</a></li>
        <li><a href="../dictionary/DictionaryEntryQueryFilter.html">DictionaryEntryQueryFilter</a></li>
        <li><a href="../dictionary/DictionaryEntryQueryLinks.html">DictionaryEntryQueryLinks</a></li>
        <li><a href="../dictionary/DictionaryEntryQueryObject.html">DictionaryEntryQueryObject</a></li>
        <li><a href="../dictionary/DictionaryEntryQueryProperty.html">DictionaryEntryQueryProperty</a></li>
        <li><a href="../dictionary/DictionaryEntryQuerySortBy.html">DictionaryEntryQuerySortBy</a></li>
        <li><a href="../dictionary/DictionaryEntryQuerySortThenBy.html">DictionaryEntryQuerySortThenBy</a></li>
        <li><a href="../dictionary/DictionaryEntryQueryWhere.html">DictionaryEntryQueryWhere</a></li>
        <li><a href="../dictionary/DictionaryEntryQueryWhereDistinct.html">DictionaryEntryQueryWhereDistinct</a></li>
        <li><a href="../dictionary/DictionaryEntryQueryWhereSort.html">DictionaryEntryQueryWhereSort</a></li>
        <li><a href="../dictionary/DictionaryFrequencyQueryFilter.html">DictionaryFrequencyQueryFilter</a></li>
        <li><a href="../dictionary/DictionaryFrequencyQueryLinks.html">DictionaryFrequencyQueryLinks</a></li>
        <li><a href="../dictionary/DictionaryFrequencyQueryObject.html">DictionaryFrequencyQueryObject</a></li>
        <li><a href="../dictionary/DictionaryFrequencyQueryProperty.html">DictionaryFrequencyQueryProperty</a></li>
        <li><a href="../dictionary/DictionaryFrequencyQuerySortBy.html">DictionaryFrequencyQuerySortBy</a></li>
        <li><a href="../dictionary/DictionaryFrequencyQuerySortThenBy.html">DictionaryFrequencyQuerySortThenBy</a></li>
        <li><a href="../dictionary/DictionaryFrequencyQueryWhere.html">DictionaryFrequencyQueryWhere</a></li>
        <li><a href="../dictionary/DictionaryFrequencyQueryWhereDistinct.html">DictionaryFrequencyQueryWhereDistinct</a></li>
        <li><a href="../dictionary/DictionaryFrequencyQueryWhereSort.html">DictionaryFrequencyQueryWhereSort</a></li>
        <li><a href="../dictionary/DictionaryHeadingQueryFilter.html">DictionaryHeadingQueryFilter</a></li>
        <li><a href="../dictionary/DictionaryHeadingQueryLinks.html">DictionaryHeadingQueryLinks</a></li>
        <li><a href="../dictionary/DictionaryHeadingQueryObject.html">DictionaryHeadingQueryObject</a></li>
        <li><a href="../dictionary/DictionaryHeadingQueryProperty.html">DictionaryHeadingQueryProperty</a></li>
        <li><a href="../dictionary/DictionaryHeadingQuerySortBy.html">DictionaryHeadingQuerySortBy</a></li>
        <li><a href="../dictionary/DictionaryHeadingQuerySortThenBy.html">DictionaryHeadingQuerySortThenBy</a></li>
        <li><a href="../dictionary/DictionaryHeadingQueryWhere.html">DictionaryHeadingQueryWhere</a></li>
        <li><a href="../dictionary/DictionaryHeadingQueryWhereDistinct.html">DictionaryHeadingQueryWhereDistinct</a></li>
        <li><a href="../dictionary/DictionaryHeadingQueryWhereSort.html">DictionaryHeadingQueryWhereSort</a></li>
        <li><a href="../dictionary/DictionaryPitchQueryFilter.html">DictionaryPitchQueryFilter</a></li>
        <li><a href="../dictionary/DictionaryPitchQueryLinks.html">DictionaryPitchQueryLinks</a></li>
        <li><a href="../dictionary/DictionaryPitchQueryObject.html">DictionaryPitchQueryObject</a></li>
        <li><a href="../dictionary/DictionaryPitchQueryProperty.html">DictionaryPitchQueryProperty</a></li>
        <li><a href="../dictionary/DictionaryPitchQuerySortBy.html">DictionaryPitchQuerySortBy</a></li>
        <li><a href="../dictionary/DictionaryPitchQuerySortThenBy.html">DictionaryPitchQuerySortThenBy</a></li>
        <li><a href="../dictionary/DictionaryPitchQueryWhere.html">DictionaryPitchQueryWhere</a></li>
        <li><a href="../dictionary/DictionaryPitchQueryWhereDistinct.html">DictionaryPitchQueryWhereDistinct</a></li>
        <li><a href="../dictionary/DictionaryPitchQueryWhereSort.html">DictionaryPitchQueryWhereSort</a></li>
        <li><a href="../dictionary/DictionaryQueryFilter.html">DictionaryQueryFilter</a></li>
        <li><a href="../dictionary/DictionaryQueryLinks.html">DictionaryQueryLinks</a></li>
        <li><a href="../dictionary/DictionaryQueryObject.html">DictionaryQueryObject</a></li>
        <li><a href="../dictionary/DictionaryQueryProperty.html">DictionaryQueryProperty</a></li>
        <li><a href="../dictionary/DictionaryQuerySortBy.html">DictionaryQuerySortBy</a></li>
        <li><a href="../dictionary/DictionaryQuerySortThenBy.html">DictionaryQuerySortThenBy</a></li>
        <li><a href="../dictionary/DictionaryQueryWhere.html">DictionaryQueryWhere</a></li>
        <li><a href="../dictionary/DictionaryQueryWhereDistinct.html">DictionaryQueryWhereDistinct</a></li>
        <li><a href="../dictionary/DictionaryQueryWhereSort.html">DictionaryQueryWhereSort</a></li>
        <li><a href="../dictionary/DictionarySearchResultByIndex.html">DictionarySearchResultByIndex</a></li>
        <li><a href="../dictionary/DictionarySearchResultQueryFilter.html">DictionarySearchResultQueryFilter</a></li>
        <li><a href="../dictionary/DictionarySearchResultQueryLinks.html">DictionarySearchResultQueryLinks</a></li>
        <li><a href="../dictionary/DictionarySearchResultQueryObject.html">DictionarySearchResultQueryObject</a></li>
        <li><a href="../dictionary/DictionarySearchResultQueryProperty.html">DictionarySearchResultQueryProperty</a></li>
        <li><a href="../dictionary/DictionarySearchResultQuerySortBy.html">DictionarySearchResultQuerySortBy</a></li>
        <li><a href="../dictionary/DictionarySearchResultQuerySortThenBy.html">DictionarySearchResultQuerySortThenBy</a></li>
        <li><a href="../dictionary/DictionarySearchResultQueryWhere.html">DictionarySearchResultQueryWhere</a></li>
        <li><a href="../dictionary/DictionarySearchResultQueryWhereDistinct.html">DictionarySearchResultQueryWhereDistinct</a></li>
        <li><a href="../dictionary/DictionarySearchResultQueryWhereSort.html">DictionarySearchResultQueryWhereSort</a></li>
        <li><a href="../dictionary/DictionaryTagQueryFilter.html">DictionaryTagQueryFilter</a></li>
        <li><a href="../dictionary/DictionaryTagQueryLinks.html">DictionaryTagQueryLinks</a></li>
        <li><a href="../dictionary/DictionaryTagQueryObject.html">DictionaryTagQueryObject</a></li>
        <li><a href="../dictionary/DictionaryTagQueryProperty.html">DictionaryTagQueryProperty</a></li>
        <li><a href="../dictionary/DictionaryTagQuerySortBy.html">DictionaryTagQuerySortBy</a></li>
        <li><a href="../dictionary/DictionaryTagQuerySortThenBy.html">DictionaryTagQuerySortThenBy</a></li>
        <li><a href="../dictionary/DictionaryTagQueryWhere.html">DictionaryTagQueryWhere</a></li>
        <li><a href="../dictionary/DictionaryTagQueryWhereDistinct.html">DictionaryTagQueryWhereDistinct</a></li>
        <li><a href="../dictionary/DictionaryTagQueryWhereSort.html">DictionaryTagQueryWhereSort</a></li>
        <li><a href="../dictionary/GetDictionaryCollection.html">GetDictionaryCollection</a></li>
        <li><a href="../dictionary/GetDictionaryEntryCollection.html">GetDictionaryEntryCollection</a></li>
        <li><a href="../dictionary/GetDictionaryFrequencyCollection.html">GetDictionaryFrequencyCollection</a></li>
        <li><a href="../dictionary/GetDictionaryHeadingCollection.html">GetDictionaryHeadingCollection</a></li>
        <li><a href="../dictionary/GetDictionaryPitchCollection.html">GetDictionaryPitchCollection</a></li>
        <li><a href="../dictionary/GetDictionarySearchResultCollection.html">GetDictionarySearchResultCollection</a></li>
        <li><a href="../dictionary/GetDictionaryTagCollection.html">GetDictionaryTagCollection</a></li>


      <li class="section-title"><a href="../dictionary/dictionary-library.html#constants">Constants</a></li>
        <li><a href="../dictionary/DictionaryEntrySchema-constant.html">DictionaryEntrySchema</a></li>
        <li><a href="../dictionary/DictionaryFrequencySchema-constant.html">DictionaryFrequencySchema</a></li>
        <li><a href="../dictionary/DictionaryHeadingSchema-constant.html">DictionaryHeadingSchema</a></li>
        <li><a href="../dictionary/DictionaryPitchSchema-constant.html">DictionaryPitchSchema</a></li>
        <li><a href="../dictionary/DictionarySchema-constant.html">DictionarySchema</a></li>
        <li><a href="../dictionary/DictionarySearchResultSchema-constant.html">DictionarySearchResultSchema</a></li>
        <li><a href="../dictionary/DictionaryTagSchema-constant.html">DictionaryTagSchema</a></li>


      <li class="section-title"><a href="../dictionary/dictionary-library.html#functions">Functions</a></li>
        <li><a href="../dictionary/deleteDictionariesHelper.html">deleteDictionariesHelper</a></li>
        <li><a href="../dictionary/deleteDictionaryHelper.html">deleteDictionaryHelper</a></li>
        <li><a href="../dictionary/depositDictionaryDataHelper.html">depositDictionaryDataHelper</a></li>
        <li><a href="../dictionary/fastHash.html">fastHash</a></li>
        <li><a href="../dictionary/preloadResultSync.html">preloadResultSync</a></li>
        <li><a href="../dictionary/prepareDirectoryAbbyyLingvoFormat.html">prepareDirectoryAbbyyLingvoFormat</a></li>
        <li><a href="../dictionary/prepareDirectoryMigakuFormat.html">prepareDirectoryMigakuFormat</a></li>
        <li><a href="../dictionary/prepareDirectoryYomichanFormat.html">prepareDirectoryYomichanFormat</a></li>
        <li><a href="../dictionary/prepareEntriesAbbyyLingvoFormat.html">prepareEntriesAbbyyLingvoFormat</a></li>
        <li><a href="../dictionary/prepareEntriesMigakuFormat.html">prepareEntriesMigakuFormat</a></li>
        <li><a href="../dictionary/prepareEntriesYomichanFormat.html">prepareEntriesYomichanFormat</a></li>
        <li><a href="../dictionary/prepareFrequenciesAbbyyLingvoFormat.html">prepareFrequenciesAbbyyLingvoFormat</a></li>
        <li><a href="../dictionary/prepareFrequenciesMigakuFormat.html">prepareFrequenciesMigakuFormat</a></li>
        <li><a href="../dictionary/prepareFrequenciesYomichanFormat.html">prepareFrequenciesYomichanFormat</a></li>
        <li><a href="../dictionary/prepareNameAbbyyLingvoFormat.html">prepareNameAbbyyLingvoFormat</a></li>
        <li><a href="../dictionary/prepareNameMigakuFormat.html">prepareNameMigakuFormat</a></li>
        <li><a href="../dictionary/prepareNameYomichanFormat.html">prepareNameYomichanFormat</a></li>
        <li><a href="../dictionary/preparePitchesAbbyyLingvoFormat.html">preparePitchesAbbyyLingvoFormat</a></li>
        <li><a href="../dictionary/preparePitchesMigakuFormat.html">preparePitchesMigakuFormat</a></li>
        <li><a href="../dictionary/preparePitchesYomichanFormat.html">preparePitchesYomichanFormat</a></li>
        <li><a href="../dictionary/prepareTagsAbbyyLingvoFormat.html">prepareTagsAbbyyLingvoFormat</a></li>
        <li><a href="../dictionary/prepareTagsMigakuFormat.html">prepareTagsMigakuFormat</a></li>
        <li><a href="../dictionary/prepareTagsYomichanFormat.html">prepareTagsYomichanFormat</a></li>
        <li><a href="../dictionary/updateDictionaryHistoryHelper.html">updateDictionaryHistoryHelper</a></li>



</ol>

  </div><!--/.sidebar-offcanvas-left-->

  <div id="dartdoc-sidebar-right" class="sidebar sidebar-offcanvas-right">
  </div><!--/.sidebar-offcanvas-->

</main>

<footer>
  <span class="no-break">
    yuuna
      2.8.0+93
  </span>

  
</footer>



<script src="../static-assets/highlight.pack.js?v1"></script>
<script src="../static-assets/docs.dart.js"></script>



</body>

</html>

